MDK KEIL 烧录STM32下载错误:Flash Timeout.Reset the Target and try it again.解决办法(芯片解锁 解除读报护)

您所在的位置:网站首页 keil contents mismatch at MDK KEIL 烧录STM32下载错误:Flash Timeout.Reset the Target and try it again.解决办法(芯片解锁 解除读报护)

MDK KEIL 烧录STM32下载错误:Flash Timeout.Reset the Target and try it again.解决办法(芯片解锁 解除读报护)

2024-07-12 17:40| 来源: 网络整理| 查看: 265

使用keil开发STM32点下载时出现下面的报错: 在这里插入图片描述 点确定后: 在这里插入图片描述 出现如上情况很可能是该芯片锁死,即设置了读写保护。 解决方法是想办法解锁芯片,可以使用ST-Link配合stlink utility软件,或者使用J-link,或者用一个自动取消读写保护位的程序在SRAM区运行一下(读写保护只影响 FLASH, SRAM调试时程序下载到 SRAM 中,不受影响) 。当然其实上面的方法原理都是一样,下面就使用ST-Link配合stlink utility软件解锁芯片的方法阐述一下。

stlink utility是ST官方提供的免费软件,支持STM32 ST-LINK的程序包括带有命令行界面(CLI)的图形用户界面(GUI)。该软件可自行到ST官网搜索下载最新版。

进入stlink utility软件后,Target->Connect显示不能读到flash,这也进一步证明这个芯片被设置了读报护。如果到这一步依然与图片现象一致,那么请继续往下跟着操作。 在这里插入图片描述 选择Target->Option Bytes 在这里插入图片描述 读到配置字节发现读报护果然被使能了: 在这里插入图片描述 将Read Out Protection选项设置位disable,点击Apply,这时候Flash已经成功解锁了: 在这里插入图片描述 解锁成功后ST-LINK上位机软件会自动连接芯片,这时发现flash已经全部被擦除了(因为flash读出来都是0xFFFFFFFF),这就是芯片的保护机制,主要防止一些想不劳而获的人通过调试器窃取芯片内的软件。 在这里插入图片描述 至此,芯片已经可以正常烧录了。

补充一点: 在这里插入图片描述 有些芯片比如L0系列的,Read Out Protection选项读出来是Level 0或是 Level 1 STM32 读保护有三个等级 L0 L1 L2 L0 是没有保护,可以随意读出来的,一般调试过程中选择。在L0 状态可以设置成L1 或者L2,修改完成不会擦除芯片已有的代码; L1 是可恢复读保护,L1–>L0状态,,会自动擦除已有的程序。L1->L2,这个设置还没有试过,(正常理解是不擦除); L2 是不可恢复读保护,此状态下,不可恢复到其他的状态,同时芯片里的程序不能再升级 类似OTP了; 这个主要是保护代码不会被其他人恶意拷贝,保护原作者的权益。

如果是这种。解锁的时候把Level 1切换到Level 0就行了。 这里注意。自己调试时不要设到Level 2去了,这样芯片就再也不能烧录新程序了。

再补充一点: 如果按上面的方法解锁了之后,再用KEIL下载还是反复报下面的错误: 在这里插入图片描述 换ST-link utility烧录时报下面的错误: 在这里插入图片描述 这个原因是上述方法没有解锁全部的Flash,还有一部分Flash没有解锁。是因为前几页flash单独设置了读报护,需要单独解锁。

选择Target->Option Bytes 在这里插入图片描述 发现如上图所示前4页flash被写保护,所以需要将其全部解锁才能下载。 (该部分写保护主要是为了Bootloader被破坏)

在这里插入图片描述 点击Unselect all,再点击Apply即可解除所有的读报护了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3